package com.tianji.learning.service;

import com.tianji.common.domain.dto.PageDTO;
import com.tianji.learning.domain.dto.NoteFormDTO;
import com.tianji.learning.domain.query.NoteAdminPageQuery;
import com.tianji.learning.domain.query.NotePageQuery;
import com.tianji.learning.domain.vo.NoteAdminDetailVO;
import com.tianji.learning.domain.vo.NoteAdminVO;
import com.tianji.learning.domain.vo.NoteVO;

public interface INoteService {
    /**
     * 新增笔记
     * @param noteDTO
     */
    void saveNote(NoteFormDTO noteDTO);

    /**
     * 采集笔记
     * @param id
     */
    void gatherNote(Long id);

    /**
     * 取消采集笔记
     * @param id
     */
    void removeGatherNote(Long id);

    /**
     * 更新笔记
     * @param noteDTO
     */
    void updateNote(NoteFormDTO noteDTO);

    /**
     * 删除我的笔记
     * @param id
     */
    void removeMyNote(Long id);

    /**
     * 用户端分页查询笔记
     * @param query
     * @return
     */
    PageDTO<NoteVO> queryNotePage(NotePageQuery query);

    /**
     * 管理端分页查询笔记
     * @param query
     * @return
     */
    PageDTO<NoteAdminVO> queryNotePageForAdmin(NoteAdminPageQuery query);

    /**
     * 管理端查询笔记详情
     * @param id
     * @return
     */
    NoteAdminDetailVO queryNoteDetailForAdmin(Long id);

    /**
     * 隐藏指定笔记
     * @param id
     * @param hidden
     */
    void hiddenNote(Long id, Boolean hidden);
}
